#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
游戏集合中心启动脚本
自动检查并安装依赖，然后启动服务器
"""

import sys
import subprocess
import os
import webbrowser
import time
from pathlib import Path

def check_python_version():
    """检查Python版本"""
    if sys.version_info < (3, 6):
        print("❌ 需要Python 3.6或更高版本")
        print(f"当前版本: {sys.version}")
        return False
    print(f"✅ Python版本: {sys.version.split()[0]}")
    return True

def install_package(package):
    """安装Python包"""
    try:
        subprocess.check_call([sys.executable, "-m", "pip", "install", package])
        return True
    except subprocess.CalledProcessError:
        return False

def check_and_install_dependencies():
    """检查并安装依赖"""
    dependencies = {
        'flask': 'Flask',
        'flask-cors': 'Flask-CORS'
    }
    
    print("🔍 检查依赖包...")
    
    for package, import_name in dependencies.items():
        try:
            if import_name == 'Flask':
                import flask
                print(f"✅ {package} 已安装")
            elif import_name == 'Flask-CORS':
                import flask_cors
                print(f"✅ {package} 已安装")
        except ImportError:
            print(f"⚠️  {package} 未安装，正在安装...")
            if install_package(package):
                print(f"✅ {package} 安装成功")
            else:
                print(f"❌ {package} 安装失败")
                return False
    
    return True

def start_server():
    """启动服务器"""
    try:
        # 导入并启动服务器
        print("🚀 启动游戏集合中心服务器...")
        
        # 设置环境变量
        os.environ['FLASK_ENV'] = 'development'
        
        # 启动服务器
        from game_server import app
        
        # 延迟打开浏览器
        def open_browser():
            time.sleep(1.5)
            webbrowser.open('http://localhost:5000')
        
        import threading
        browser_thread = threading.Thread(target=open_browser)
        browser_thread.daemon = True
        browser_thread.start()
        
        print("🎮 游戏集合中心服务器启动成功！")
        print("📝 访问地址: http://localhost:5000")
        print("⚡ 浏览器将自动打开...")
        print("⚠️  按 Ctrl+C 可以停止服务器")
        print("-" * 50)
        
        app.run(debug=False, host='0.0.0.0', port=5000, use_reloader=False)
        
    except ImportError as e:
        print(f"❌ 导入错误: {e}")
        print("请确保 game_server.py 文件存在且正确")
        return False
    except Exception as e:
        print(f"❌ 启动失败: {e}")
        return False
    
    return True

def main():
    """主函数"""
    print("=" * 50)
    print("🎮 游戏集合中心启动器")
    print("=" * 50)
    
    # 检查Python版本
    if not check_python_version():
        input("按回车键退出...")
        return
    
    # 检查当前目录
    current_dir = Path.cwd()
    server_file = current_dir / "game_server.py"
    html_file = current_dir / "game_center.html"
    
    if not server_file.exists():
        print(f"❌ 找不到 game_server.py 文件")
        print(f"请确保在正确的目录中运行此脚本")
        input("按回车键退出...")
        return
        
    if not html_file.exists():
        print(f"❌ 找不到 game_center.html 文件")
        print(f"请确保在正确的目录中运行此脚本")
        input("按回车键退出...")
        return
    
    print("✅ 文件检查通过")
    
    # 检查并安装依赖
    if not check_and_install_dependencies():
        print("❌ 依赖安装失败，无法启动服务器")
        input("按回车键退出...")
        return
    
    print("✅ 依赖检查完成")
    print("-" * 50)
    
    # 启动服务器
    try:
        start_server()
    except KeyboardInterrupt:
        print("\n👋 服务器已停止")
    except Exception as e:
        print(f"❌ 运行错误: {e}")
        input("按回车键退出...")

if __name__ == "__main__":
    main() 